package com.itheima.dao;

import com.itheima.pojo.CheckGroup;
import com.itheima.pojo.Order;
import com.itheima.pojo.Sorting;
import com.itheima.pojo.Setmeal;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author 吴
 * @version V1.0
 * @Description  预约信息
 * @Package com.itheima.dao
 * @date 2021/11/27 18:40
 */
public interface OrderDao {
    /**
     * 根据条件查询预约数据
     * @param orderCondition 条件
     * @return
     */
    List<Order> findByCondition(Order orderCondition);

    /**
     * 保存用户预约信息
     * @param order
     */
    void addOrder(Order order);

    /**
     *  根据预约Id 查询 （体检人名、体检套餐名、体检日期、预约类型）
     * @param orderId  预约Id
     */
    Order findMemSetmealByOrderId(Integer orderId);

    /**
     *  根据当前日期查询当天的预约数量
     * @param today 当前日期：2012-11-30
     * @return
     */
    int selectTodayOrderByOrderDate(String today);

    /**
     *  根据当前日期查询当天的到诊人数
     * @param today 当前日期：2012-11-30
     * @return
     */
    int selectOrderVisitsCountByOrderDate(String today);

    /**
     * 根据日期查询日期之后的预约人数
     * @param date 日期：2012-11-30
     * @return 日期之后的预约人数
     */
    int selectAfterOrderCountByOrderDate(String date);

    /**
     * 根据日期查询日期之后的到诊人数
     * @param date 日期：2012-11-30
     * @return 日期之后的到诊人数
     */
    int selectAfterOrderVisitsCountByOrderDate(String date);

    /**
     * 查询所有分院
     * @return
     */
    List<Sorting> findSortings();

    /**
     * 查询每月收入
     * @param month
     * @return
     */
    List<Setmeal>  findOrderCountAndSetmealNameByBeforeDate(String month);

    /**
     * 每个月的预约数量
     * @param beforeDate
     * @return
     */
    Integer findOrderCountBeforeDate(String beforeDate);

    /**
     * 每个月的已到诊数量
     * @param beforeDate
     * @return
     */
    Integer findPayCountBeforeDate(String beforeDate);


    /**
     * 带条件分页查询检查组信息
     * @param map
     * @return
     */
    List<Map> selectByCondition(Map<String, String> map);

    /**
     * 根据id查询数据并回显
     * @return
     */
    Map<String, Object> findById(Integer orderId);

    /**
     * 根据id修改预约信息
     * @param map
     */
    void updateById(Map<String, String> map );


    /**
     * 修改到诊状态
     * @param map
     */
    void changeStatus(Map<String,Object> map);
}
